const MongoClient = require('mongodb').MongoClient;
//内部函数
function _connectDB(callback){
    MongoClient.connect('mongodb://localhost:27017', function (err,client) {
        callback(err,client.db('local'));
        client.close();
    });
}


exports.insertOne=function (collectionName,json,callback) {
    _connectDB(function (err,db) {
        db.collection(collectionName).insertOne(json,function(err,result){
            callback(err,result);
        });
    })
};

exports.find=function (collectionName,json,callback,args) {
    var skipnumber= 0;
    var limit= 1;
    var sort= {};
    if(arguments.length === 4){
        skipnumber=args.skipnumber * args.page || 0;
        limit=args.limit || 1;
        sort=args.sort || {};
    }
    var result=[];
    _connectDB(function (err,db) {
        var cursor=db.collection(collectionName).find(json).skip(skipnumber).sort(sort).limit(limit);
        cursor.each(function (err,doc) {
            if(err){
                throw err;
            }
            if(doc != null){
                result.push(doc);
            }else{
                callback(null,result);//没有更多文档了
            }
        })
    })
};

exports.deleteMany=function (collectionName,json,callback) {
    _connectDB(function (err,db) {
        db.collection(collectionName).deleteMany(json,callback);
    })
};

exports.update=function (collectionName,json,data,callback) {
    _connectDB(function (err,db) {
        db.collection(collectionName).updateMany(json,{
            $set:data
        },callback);
    })
};

exports.getAllCount=function (collectionName,json,callback) {
    _connectDB(function (err,db) {
        db.collection(collectionName).count({}).then(callback);
    })
};